use serde_json::{json, Value};
use std::fs;

const FILE_PATH_1: &str = "C:\\Users\\l7871\\AppData\\Local\\JetBrains\\RustRover2025.1\\log";
const _FILE_PATH_2: &str = "C:\\Users\\l7871\\AppData\\Local\\JetBrains\\RustRover2025.1\\log";
const PREFIX: &str = "";
fn main() {
    // 初始化一个空的Vec用于存储高度值
    let mut heights: Vec<u8> = Vec::new();
    // 生成从30到1020，每次增加30的高度值序列
    for i in (30..=1020).step_by(30) {
        // 步进30
        heights.push(i as u8)
    }
    // 尝试读取指定路径下的目录条目
    match fs::read_dir(FILE_PATH_1) {
        // 如果成功读取目录条目
        Ok(entries) => {
            // 遍历目录中的每个条目
            for entry in entries {
                match entry {
                    Ok(entry) => {
                        // 判断条目是否为json文件
                        if let Some(ext) = entry.path().extension() {
                            if ext == "json" {
                                // 提取并处理文件名
                                let file_name = entry.file_name();
                                let file_name = file_name.to_str().unwrap().replace(".json", "");
                                let split: Vec<&str> = file_name.split("_").collect();
                                let end_name_str = format!("{}.{}", split[2], split[3]);
                                let end_name = format!("{}.{}", split[2], split[3]);
                                let _hour: f32 = end_name.parse().unwrap();
                                // 初始化一个临时Vec用于存储处理后的数据
                                let mut temp_data = vec![];
                                // 遍历每个高度值，构造新的文件名，并尝试读取文件内容
                                for height in &heights {
                                    let new_file_name = format!(
                                        "{}_{}_{}{}",
                                        PREFIX, end_name_str, height, "m.json"
                                    );
                                    match fs::read_to_string(new_file_name) {
                                        Ok(data) => {
                                            // 解析读取到的JSON数据
                                            let data_json: Value =
                                                serde_json::from_str(&data).unwrap();
                                            // 处理数据，插入高度信息，并存储到临时Vec中
                                            match data_json {
                                                Value::Array(arr) => {
                                                    for item in arr {
                                                        if let Value::Object(mut data) = item {
                                                            data.insert(
                                                                "height".to_string(),
                                                                Value::Number((*height).into()),
                                                            );
                                                            temp_data.push(Value::Object(data));
                                                        }
                                                    }
                                                }
                                                _ => {}
                                            }
                                        }
                                        Err(_e) => {}
                                    }
                                }
                                // 读取数据文件为json数据
                                let json_data_str = fs::read_to_string(&entry.path()).unwrap();
                                // 解析JSON数据并处理
                                let data: Value = serde_json::from_str(&json_data_str).unwrap();
                                match data {
                                    Value::Array(arr) => {
                                        for item in arr {
                                            match item {
                                                Value::Object(data) => {
                                                    // 输出处理后的数据
                                                    println!("{}", json!(data));
                                                }
                                                _ => {}
                                            }
                                        }
                                    }
                                    _ => {}
                                }
                            }
                        }
                    }
                    Err(_e) => {}
                }
            }
        }
        // 如果读取目录条目时发生错误，则打印错误信息
        Err(e) => {
            eprintln!("读取路径时发生错误 {}", e)
        }
    }
}

